package com.liu.user.dao;

import com.liu.user.entity.User;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

/**
 * Created by Administrator on 2019/8/15 0015.
 *
 * concat() 字符串拼接很好用。记得这个是mysql的函数
 * 在param 导包的过程中，记得导包别倒错，要不然会查不到数据，或者报错
 * 这里还支持原生的sql。视情况而选择相应技术类型
 * 在使用原生的sql实例：
 *
 *
 */
public interface UserDao extends JpaRepository<User,String>,JpaSpecificationExecutor<User> {

// 这个是hibernate的方式
//  @Query(value = " select u  from  User u where u.loginName like concat('%',:query,'%') or u.cardId like concat('%',:query,'%') ")
//    这种方式代表使用原生的sql查询方式
//    @Query(value = "select u.*  from  boot_user u where u.login_name like concat('%',:query,'%') or u.card_id like concat('%',:query,'%')",nativeQuery = true)
//  占位符的使用
@Query(value = " select u  from  User u where u.loginName like concat('%',?1,'%') or u.cardId like concat('%',?1,'%') ")
   public  Page<User> findSearch(@Param("query") String query, Pageable pageable);


    public User findByMobile(String mobile);


    @Modifying
    @Query("update  User u set u.fanscount=u.fanscount+?2 where u.id =?1")
    public  void incFanscount(String userid,int x);



    @Modifying
    @Query("update  User u set u.followcount=u.followcount+?2 where u.id =?1")
    public  void incFollowcount(String userid,int x);














}
